NuttX-7.1
---------

The 101st release of NuttX, Version 7.1, was made on March 15, 2014,
and is available for download from the SourceForge website. Note
that release consists of two tarballs: nuttx-7.1.tar.gz and
apps-7.1.tar.gz. Both may be needed (see the top-level nuttx/README.txt
file for build information).

The previous NuttX version was 6.33. The NuttX minor version number is
incremented on each release, but the major version number is incremented
only when an incompatibility with previous versions is included in the
release. In this case, the legacy, manual configuration is no longer
supported by the NuttX build system beginning with NuttX 7.1. Only the
newer configurations generated by the kconfig-frontends tools will generate
viable NuttX configurations.

All board configurations in the NuttX source tree have been converted to
use the newer configuration, but if you have some older style configurations
for you board, you will need to convert those configurations to use the
kconfig-frontends tools before taking any new code from the repository. See
https://cwiki.apache.org/confluence/display/NUTTX/Converting+Legacy+Configurations+to+Use+kconfig-mconf
for some guidelines.

Additional new features and extended functionality:

* Core OS:

- System time logic now includes logic to measure and calculate the
CPU load percentage (from David Alessio). This CPU load logic
extended to keep counts on each thread. The per-thread CPU is
now reported in the procfs under <pid>/loadavg An asynchronous,
"external" clock may be used to drive the CPU load calculations
for more accurate measurements when needed.

* File Systems:

- As mentioned above, the per-thread CPU load information is now
reported in the procfs under <pid>/loadavg.
- Many file system interfaces have been extended to operate on the
top-level NuttX pseudo filesystem. These include rmdir, mkdir,
rename, and unlink. This capability can be disabled with
CONFIG_DISABLE_PSEUDOFS_OPERATIONS in order to keep the footprint
small.

* Networking:

- Numerous updates and improvements to the CC3000 driver from David
Sidrane.

* Common Drivers:

- Defined a mouse interface that is very similar to a touchscreen
interface, but allows reporting of all mouse buttons. Also, unlike
touchscreen drivers, mouse drivers need to report positional data
with no button is pressed so that the mouse position can drive a
cursor.
- Added support for a USB HID boot mouse device. Cursor support is
not integrated and must be provided by the application based upon
the reported mouse data.
- Support added for the MIO283QT9A LCD from Toby Duckworth.

* Atmel SAMA4E:

- Added complete architecture support for the Atmel AT91 SAM4E
Cortex-M4F parts.

* Atmel SAM4E Board Support:

- Add board support for the SAM4E-EK board.

* Atmel SAM4E Drivers:

- Added logic to manage the Cortex-M Cache Control block.
- Developed and integrated an Ethernet MAC driver for the SAM4E.
- Backported the SAMA5 SPI driver to the SAM3/4 architecture. The
SAMA5 version supports both multiple SPI peripherals as needed by the
SAM3A and SAM3X and also supports DMAC (but not PDC) needed by the
SAM4E.

* Atmel SAM D20:

- Added basic architecture support for the Atmel AT91 SAM D20
Cortex-M0+ parts.

* Atmel SAM D20 Board Support:

- Added basic support for SAM D2 Xplained Pro board. Currently, the
NuttShell (NSH) works reliably over a serial port. An SPI driver
has also been developed. Work with the SAM D20 has been temporarily
stopped, however, in order to focus on the SAM4E-EK.

* TI Tiva TMC4C123G:

- Added architecture support for the TI Tiva TM4C123G parts. This was
merged into the existing support for the LM3S and LM4F families.
All directory, file, and function references changed from lm to tiva.

* TI Tiva TMC4C123G Board Support:

- Added basic board support for the TM4C123G-Launchpad. As of this
release the TM4C123G-Launchpad board support is untested and likely
incomplete.

* STMicro STM32 Boards:

- The Mikroe STM32F4 can now support the newer MIO283QT9A LCD. From
Toby Duckworth.
- Miscellaneous changes to better support FPU on STM32F429 Discovery
from David Alessio.

* NXP LPC2378 Drivers:

- Incorporated I2C and SPI drivers for the LPC23xx from Lizhuoyi.

* QEMU i486 Drivers:

- New QEMU keyboard and VGA drivers from Lizhuoyi.

* Documentation:

- Added a coding standards document. See
https://nuttx.apache.org/docs/latest/contributing/coding_style.html

* Configuration/Build System:

- A configuration option, CONFIG_DEFAULT_SMALL, was added to select
default values for configuration variables based upon whether you
want a smaller footprint or more features. This is not very useful
if you are modifying existing configurations because then the
default values do not apply.
- CONFIG_DEFAULT_SMALL has been defined on all tiny MCU configurations
so that they do not grow so rapidly when new, optional features are
added.
- The legacy, manual configuration is no longer supported by the
NuttX build system. Only the newer configurations generated by
the kconfig-frontends tools will generate viable NuttX
configurations. All board configurations in the NuttX source tree
have been converted to use the newer configuration, but if you have
some older style configurations for you board, you will need to
convert those configurations to use the kconfig-frontends tools. See
https://cwiki.apache.org/confluence/display/NUTTX/Converting+Legacy+Configurations+to+Use+kconfig-mconf
for some guidelines.

* Applications:

- NSH can now use an EMACS-like command line editor. This CLE, is
really more like the traditional readline than is the default, tiny
the NuttX readline .
- The touchscreen example can now be configured to work with either a
touchscreen or a mouse device.
- Several NSH commands can now be used to operate on objects in the
top-level pseudo-filesystem: rmdir, mkdir, mv, and rm. This
capability can be disabled with CONFIG_DISABLE_PSEUDOFS_OPERATIONS
in order to keep the footprint small.
- If both the CPU load feature and the procfs features are enabled,
then the NSH 'ps' command will show the CPU load used by each
thread.

Bugfixes (see the ChangeLog for details). Some of these are very important:

* Core OS:

- task_terminate() always returned an error because the return value
was not being set correctly (from Gosha).
- nanosleep() Fix a missing call to re-enable interrupts (from Jason
Jiang).

* File Systems:

- Fixed an error in the FAT logic that can cause file corruption. The
error conditions are rare and only seen with very large files (from
Andrew Tridgell). This replaces a previous, partial fix for the same
problem.
- Fixed memory leaks in the NXFFS open() and stat() implementations
(from Lzyy).
- The interfaces include opendir(), readdir(), et al, were modified so
that errors will not be reported if you attempt to list a empty
pseudo-directory.

* Networking:

- Fix one place where the connection reference count was not being
decremented in the socket close() logic. This is really a cosmetic
change BUT when CONFIG_DEBUG_NET is enabled, it will cause assertions.
- Backed out a small part of the NuttX 6.33 write buffering changed.
David G says that this causes problems in connecting to a server.
- In DHCPD, there was a place where the logic was calling ntohl()
inappropriately; the address was already in the correct order. How
could DHCPD have worked with this bug?

* TI Tiva/Stellaris Drivers:

- Fixed cut'n'paste error that prevented UARTS2-7 from being used with
the LM4F120 Launchpad.
- Fixed several errors there were unmasked with UARTs > UART2 are
enabled (grom Gosha).

* Allwinner A10 Drivers:

- Fixed cut'n'paste error that prevented UARTS2-7 from being used with
the pcDuino.

* NXP LPC17xx Drivers:

- Fix an compilation error that crept into the LPC17xx USB host driver.

* STMicro STM32 Drivers:

- Fix cloned typo in the serial driver: FLOWCONTROL vs FLOWCONROL.
- Disable SPI before changing DPI CR1 register (from David Sidrane).
- stm32 TIM: Set the timer CCMR when selecting timer channel. From
David Sidrane.
- Fix typo in a Makefile: stm32_pwm.c not stm32_psm.c. Noted by Max
Kriegleder.

* Library:

- More sscanf() bug fixes from David Sidrane.

* Header files:

- cstdbool: Ignore _Bool8 if CONFIG_C99_BOOL8=y

* Configuration/Build System:

- Several changes to restore the broken native Windows build

* NuttShell (NSH):

- Use strncpy vs strcpy in the Telnet console logic to avoid
overrunning the username and password buffers (from Bertold Van den
Bergh).
- Add a newline after printing the file in the 'cat' command. This
prevents the NSH prompt from be in the same line as the final line
of the file in the case where there is no newline at the end of the
file.
